const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/yxlm', { useNewUrlParser: true, useUnifiedTopology: true })
.then(() => {console.log('数据库连接成功')})
.catch(err => {console.log(err + '数据库连接失败')});

// 创建集合规则
var userSchema = new mongoose.Schema({
    name: {
        type: String,           // 字段内容类型: 字符型
        required: true,         // 这个表示当前字段必填
        minlength: [2, '最小不得低于2个字'],           // 字符串最小长度
        maxlength: [8, '最大不得高于8个字'],           // 字符串最大长度
        trim: true          // 去除字符串两边的空格
    },
    age: {
        required: true,
        type: Number,           // 字段内容类型: 数字型
        min: [16, '数值不能小于16'],            // num值最小值
        max: [80, '数值不能大于80']             // num值最大值
    },
    sex: {
        required: true,
        type: String,

        // 指定字段内容只能为这里面的
        enum: {
            values: ['男', '女', '人妖'],
            message: '该字段只能填入指定内容'
        }
    },
    signature: {
        type: String,

        // 自定义规则
        validate: {
            validator: v => {
                return v && v.length >= 2;
            },
            message: '字段内容不能为空或小于2个字'
        }
    }
});

// 创建集合
var User = mongoose.model('User', userSchema);

// 创建集合对象
User.create({
    name: '陈雨鑫',
    age: 18,
    sex:'人妖',
    signature: '杂钟'
})
.then((doc) => {
    console.log(doc);
})
.catch((err) => {
    // 得到err对象中的 errors错误对象并遍历取每个字段里面的message
    var errors = err.errors
    for (var k in errors) {
        console.log(errors[k]['message'])
    }
});

User.updateOne({signature: '杂钟'}, {signature: '杂种'}).then(doc => {console.log(doc)});